Projet Pollution

BEX Roméo

2023-11-30

Objectifs du projet

  • Etablir une corrélation entre pollution en Occitanie et météo
  • Etablir une hiérarchie des villes en fonction du taux de pollution des principaux polluants

Technicité et source

Analyse du code


import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
import seaborn as sns
import os 

# Remplacez 'votre_fichier.csv' par le chemin vers votre fichier CSV
chemin_fichier_csv = 'Mesure_mensuelle_Region_Occitanie_Polluants_Principaux.csv'

# Charger le fichier CSV dans un DataFrame
df = pd.read_csv(chemin_fichier_csv)

# Créer un dégradé de couleurs pour la palette
couleurs = sns.color_palette("coolwarm", as_cmap=True)

# Créer un diagramme circulaire (camembert) pour la variable 'nom_dept'
plt.figure(figsize=(10, 8))
sns.set(style="whitegrid")  # Style de fond pour une meilleure lisibilité

# Tracer le camembert avec le dégradé de couleurs
df['nom_dept'].value_counts().plot.pie(autopct='%1.1f%%', startangle=140, cmap=couleurs)
plt.title('Répartition des données par département')
plt.axis('equal')  # Assure que le camembert est dessiné comme un cercle
plt.ylabel('')  # Supprimer l'étiquette de l'axe y pour plus de clarté

plt.show()

Résultat :

Code carte intéractive :

#calcule de la valeur seuil 
moyenne_pollution = df['valeur'].mean()
ecart_type_pollution = df['valeur'].std()


print("Moyenne de la pollution:", moyenne_pollution)
print("Écart type de la pollution:", ecart_type_pollution)
print("Valeur la plus élevée:", seuil_valeur_elevee)

# Charger le fichier CSV dans un DataFrame
chemin_fichier_csv = 'Mesure_mensuelle_Region_Occitanie_Polluants_Principaux.csv'
df = pd.read_csv(chemin_fichier_csv)

# Créer une colonne 'geometry' avec les coordonnées X et Y sous forme de GeoJSON
df['geometry'] = df.apply(lambda row: {"type": "Point", "coordinates": [row['X'], row['Y']]}, axis=1)

# Valeur seuil
SEUIL_DE_VALEUR_ELEVEE = 23  

# Créer une carte avec le service WMTS
carte = Map(center=(43.611015, 3.876733), zoom=9)

# Ajouter une couche WMTS à la carte
wmts_url = "https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/WMTS"
wmts_layer = TileLayer(url=wmts_url, name="WMTS Layer")
carte.add_layer(wmts_layer)

# Créer une GeoJSON FeatureCollection à partir des données de votre DataFrame
geojson_data = {
    "type": "FeatureCollection",
    "features": []
}

# Marqueurs pour les valeurs élevées
high_value_markers = []

for index, row in df.iterrows():
    feature = {
        "type": "Feature",
        "geometry": row['geometry'],
        "properties": {"nom_dept": row['nom_dept'], "valeur": row['valeur']}
    }
    geojson_data['features'].append(feature)

    # Ajouter un marqueur si la valeur de pollution est élevée
    if row['valeur'] > SEUIL_DE_VALEUR_ELEVEE:
        marker = Marker(location=(row['Y'], row['X']), draggable=False, title=f"Valeur: {row['valeur']}")
        high_value_markers.append(marker)

# Créer une couche GeoJSON pour les zones polluées
geojson_layer = GeoJSON(data=geojson_data, style={'color': 'red', 'opacity': 0.8, 'weight': 1.5})
carte.add_layer(geojson_layer)

# Ajouter les marqueurs à la carte
for marker in high_value_markers:
    carte.add_layer(marker)

# Trouver l'indice de la valeur maximale dans la colonne 'valeur'
indice_max = df['valeur'].idxmax()

# Obtenir les coordonnées X et Y pour l'emplacement de la valeur maximale
coordonnees_max = df.loc[indice_max, ['X', 'Y']]

print("Coordonnées de l'endroit avec la valeur la plus élevée:", coordonnees_max)


# Afficher la carte 
display(widgets.HBox([carte]))

Résultat :

Moyenne de la pollution: 23.731417458945568
Écart type de la pollution: 25.289153037830907
Valeur la plus élevée: 74.30972353460739
Coordonnées de l'endroit avec la valeur la plus élevée: X    3.82806
Y    43.6116
Name: 555, dtype: object

Hiérarchie des villes en fonction des polluants :

Tableau des scores